home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / pcboard / is_fm_25.zip / FILEMENU.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-11-29  |  8KB  |  497 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN006
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  INTEGER004
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     Integer  INTEGER007
  30.     Integer  INTEGER008
  31.     Integer  INTEGER009
  32.     Integer  INTEGER010
  33.     Integer  INTEGER011
  34.     Integer  INTEGER012
  35.     Integer  INTEGER013
  36.     Integer  INTEGER014
  37.     Integer  INTEGER015
  38.     String   STRING001
  39.     String   STRING002
  40.     String   STRING003
  41.     String   STRING004
  42.     String   STRING005
  43.     String   STRING006
  44.     String   STRING007
  45.     String   STRING008
  46.     String   STRING009
  47.     String   STRING010
  48.     String   STRING011
  49.     String   STRING012
  50.     String   STRING013
  51.     String   STRING014
  52.     String   STRING015
  53.     String   STRING016
  54.     String   STRING017
  55.     Byte     TBYTE001(50)
  56.     Byte     TBYTE002(8)
  57.     BigStr   BIGSTR001
  58.     BigStr   BIGSTR002
  59.     BigStr   BIGSTR003
  60.     BigStr   BIGSTR004
  61.     BigStr   BIGSTR005
  62.     Declare  Procedure PROC001(String STRING019, Var Boolean BOOLEAN005, Var String STRING020)
  63.     Declare  Procedure PROC002(Var Boolean BOOLEAN004, Var String STRING018)
  64.     Declare  Procedure PROC003(String STRING021, String STRING022, Integer INTEGER016, String STRING023)
  65.  
  66. ;------------------------------------------------------------------------------
  67.  
  68.     Goto LABEL001
  69.     End
  70.  
  71. ;------------------------------------------------------------------------------
  72.  
  73.     Procedure PROC002(Var Boolean BOOLEAN004, Var String STRING018)
  74.  
  75.     If (Exist(PPEPath() + PPEName() + ".KEY")) Then
  76.         PROC001(PPEPath() + PPEName() + ".KEY", BOOLEAN004, STRING018)
  77.     ElseIf (Exist(PPEPath() + "POWERPAK.KEY")) Then
  78.         PROC001(PPEPath() + "POWERPAK.KEY", BOOLEAN004, STRING018)
  79.     Else
  80.         BOOLEAN004 = 0
  81.         STRING018 = "Unregistered"
  82.     Endif
  83.  
  84.     EndProc
  85.  
  86.  
  87. ;------------------------------------------------------------------------------
  88.  
  89.     Procedure PROC001(String STRING019, Var Boolean BOOLEAN005, Var String STRING020)
  90.  
  91.     Integer  INTEGER011
  92.     BigStr   BIGSTR001
  93.     BigStr   BIGSTR002
  94.     BigStr   BIGSTR003
  95.     Boolean  BOOLEAN006
  96.     BigStr   BIGSTR004
  97.     BigStr   BIGSTR005
  98.     Byte     TBYTE001(50)
  99.     Byte     TBYTE002(8)
  100.     Integer  INTEGER012
  101.     Integer  INTEGER013
  102.     Integer  INTEGER014
  103.     Integer  INTEGER015
  104.  
  105.     BOOLEAN006 = 1
  106.     BIGSTR003 = ""
  107.     STRING020 = "Unregistered"
  108.     INTEGER011 = FNext()
  109.     FOpen INTEGER011, STRING019, 0, 0
  110.     FDefIn INTEGER011
  111.     FDRead BIGSTR001, 50
  112.     BIGSTR004 = BIGSTR001
  113.     BIGSTR003 = BIGSTR001
  114.     For INTEGER015 = 1 To 50
  115.         FDRead TBYTE001(INTEGER015), 1
  116.         BIGSTR003 = BIGSTR003 + String(TBYTE001(INTEGER015))
  117.         If (IsBitSet(BIGSTR004, TBYTE001(INTEGER015))) Then
  118.             BitClear BIGSTR004, TBYTE001(INTEGER015)
  119.             Continue
  120.         Endif
  121.         BitSet BIGSTR004, TBYTE001(INTEGER015)
  122.     Next
  123.     STRING020 = Trim(BIGSTR004, " ")
  124.     FDRead BIGSTR002, 8
  125.     BIGSTR005 = BIGSTR002
  126.     BIGSTR003 = BIGSTR003 + BIGSTR002
  127.     For INTEGER015 = 1 To 8
  128.         FDRead TBYTE002(INTEGER015), 1
  129.         BIGSTR003 = BIGSTR003 + String(TBYTE002(INTEGER015))
  130.         If (IsBitSet(BIGSTR005, TBYTE002(INTEGER015))) Then
  131.             BitClear BIGSTR005, TBYTE002(INTEGER015)
  132.             Continue
  133.         Endif
  134.         BitSet BIGSTR005, TBYTE002(INTEGER015)
  135.     Next
  136.     FDRead INTEGER012, 4
  137.     FDRead INTEGER013, 4
  138.     FDRead INTEGER014, 4
  139.     FClose INTEGER011
  140.     BIGSTR003 = BIGSTR003 + String(INTEGER012) + String(INTEGER013)
  141.     If ((Trim(BIGSTR005, " ") <> PPEName()) && (BIGSTR005 <> "POWERPAK")) Then
  142.         BOOLEAN006 = 0
  143.         STRING020 = "Invalid Key"
  144.     ElseIf (((INTEGER014 <> Crc32(0, BIGSTR003)) || (INTEGER012 <> Crc32(0, BIGSTR001))) || (INTEGER013 <> Crc32(0, BIGSTR002))) Then
  145.         BOOLEAN006 = 0
  146.         STRING020 = "Invalid Key"
  147.     Endif
  148.     BOOLEAN005 = BOOLEAN006
  149.  
  150.     EndProc
  151.  
  152.     :LABEL001
  153.     PROC002(BOOLEAN003, STRING017)
  154.     STRING010 = "2.5 "
  155.     STRING011 = "@X0BFileMenu v" + STRING010 + "@X09■Registered To: " + Left(STRING017, 23)
  156.     STRING014 = PPEPath() + PPEName() + ".CNF"
  157.     STRING002 = TokenStr()
  158.     If (!(Strip(STRING002, Chr(32)) == "")) PROC003("", "F " + STRING002 + Chr(13), 0, "")
  159.     RdUNet PcbNode()
  160.     STRING013 = UN_City()
  161.     WrUNet PcbNode(), UN_Stat(), U_Name(), "In FileMenu", "", ""
  162.     If (Exist(STRING014)) Goto LABEL002
  163.     PrintLn "@X0CConfig File Missing"
  164.     Log "Filemenu - No Config File Found", 0
  165.     Wait
  166.     WrUNet PcbNode(), UN_Stat(), U_Name(), STRING013, "", ""
  167.     End
  168.     :LABEL002
  169.     FOpen 1, STRING014, 0, 0
  170.     FGet 1, STRING001
  171.     FGet 1, STRING001
  172.     FGet 1, STRING001
  173.     FGet 1, STRING012
  174.     FGet 1, STRING001
  175.     BOOLEAN001 = (Upper(Trim(STRING001, " ")) == "Y")
  176.     FClose 1
  177.     STRING009 = PPEPath() + String(CurConf()) + ".TBL"
  178.     If (!Exist(STRING009)) STRING009 = PPEPath() + STRING012
  179.     If (!Exist(STRING009)) STRING009 = PPEPath() + "0.TBL"
  180.     If (Exist(STRING009)) Goto LABEL003
  181.     PrintLn "@X0CFile Table Missing"
  182.     Log "Filemenu - No File Table Found", 0
  183.     Wait
  184.     WrUNet PcbNode(), UN_Stat(), U_Name(), STRING013, "", ""
  185.     End
  186.     :LABEL003
  187.     FOpen 1, STRING009, 0, 0
  188.     FGet 1, STRING006
  189.     FGet 1, STRING005
  190.     FGet 1, STRING001
  191.     If (!(Trim(STRING001, " ") == "")) BOOLEAN001 = Upper(Trim(STRING001, " ")) == "Y"
  192.     FClose 1
  193.     If (Exist(STRING006)) Goto LABEL004
  194.     Log "Missing Dir List - " + STRING006, 0
  195.     PROC003("Error in TBL, Dir List missing", Chr(13), 36, STRING013)
  196.     :LABEL004
  197.     Cls
  198.     DispFile STRING005, 4 + 2 + 1
  199.     STRING003 = ""
  200.     PrintLn STRING011
  201.     InputStr "@X0BWhich File Library @X0F#@X0B would you like to view, or @X0FS@X0B to Search", STRING003, 11, 3, "1234567890SsZzLl", 256 + 2 + 8
  202.     Select Case (STRING003)
  203.         Case "Z", "L", "I"
  204.             PROC003("", STRING003 + Chr(13), 0, STRING013)
  205.         Case "S"
  206.             INTEGER010 = 2
  207.             INTEGER009 = 0
  208.             STRING003 = ""
  209.             PrintLn 
  210.             InputStr "@X0BWhat FILE DIRECTORY (Not Filename) string to search for", STRING003, 11, 20, Mask_Ascii(), 2 + 8
  211.             If (STRING003 == "") End
  212.             Cls
  213.             PrintLn STRING011
  214.             PrintLn 
  215.             FOpen 2, STRING009, 0, 0
  216.             FGet 2, STRING001
  217.             FGet 2, STRING001
  218.             FGet 2, STRING001
  219.             :LABEL005
  220.             If (Ferr(2)) Goto LABEL007
  221.             INTEGER009 = INTEGER009 + 1
  222.             BOOLEAN002 = 0
  223.             FGet 2, STRING008
  224.             If (Ferr(2) || (Trim(STRING008, " ") == "")) Goto LABEL007
  225.             FGet 2, STRING016
  226.             If (Ferr(2)) Goto LABEL007
  227.             FGet 2, STRING015
  228.             If (Ferr(2)) Goto LABEL007
  229.             FGet 2, STRING001
  230.             If (Upper(Trim(STRING008, " ")) == "STUFF") Goto LABEL006
  231.             If (Upper(Trim(STRING016, " ")) == "MULTIPLE") Then
  232.                 BOOLEAN002 = 1
  233.                 Tokenize STRING015
  234.                 STRING016 = GetToken()
  235.                 If (InStr(STRING016, "-") > 0) Then
  236.                     INTEGER008 = ToInteger(Right(STRING016, Len(STRING016) - InStr(STRING016, "-")))
  237.                     INTEGER007 = ToInteger(Left(STRING016, InStr(STRING016, "-") - 1))
  238.                 Else
  239.                     INTEGER007 = ToInteger(STRING016)
  240.                     INTEGER008 = ToInteger(STRING016)
  241.                 Endif
  242.             Else
  243.                 INTEGER007 = ToInteger(STRING016)
  244.                 INTEGER008 = ToInteger(STRING015)
  245.             Endif
  246.             PrintLn "@X0CMenu ", Left(String(INTEGER009), 3), "  @X0D(", STRING008, ")@X07"
  247.             Inc INTEGER010
  248.             INTEGER002 = 0
  249.             INTEGER004 = FileInf(STRING006, 4) / 96
  250.             If (INTEGER008 > INTEGER004) INTEGER008 = INTEGER004
  251.             While (1) Do
  252.                 FOpen 1, STRING006, 0, 0
  253.                 FDefIn 1
  254.                 FSeek 1, 0, 0
  255.                 For INTEGER006 = 1 To INTEGER004
  256.                     Inc INTEGER002
  257.                     FRead 1, STRING007, 96
  258.                     STRING007 = Mid(STRING007, 61, 34 - Len(String(INTEGER002)))
  259.                     If (((InStr(Upper(STRING007), STRING003) >= 1) && (INTEGER002 >= INTEGER007)) && (INTEGER002 <= INTEGER008)) Then
  260.                         Inc INTEGER010
  261.                         PrintLn "@X0EDir # @X0F", Left(String(INTEGER002), 4), "@X0A  ", STRING007
  262.                     Endif
  263.                     If (INTEGER002 > INTEGER008) Break
  264.                     If (INTEGER010 == 20) Then
  265.                         STRING003 = YesChar()
  266.                         InputYN "@X0EView next screen (Enter for more)", STRING003, 14
  267.                         If (STRING003 == NoChar()) Then
  268.                             FCloseAll
  269.                             PrintLn 
  270.                             PROC003("", "", 0, STRING013)
  271.                         Endif
  272.                         Cls
  273.                         PrintLn STRING011
  274.                         PrintLn 
  275.                         PrintLn "@X0CMenu ", Left(String(INTEGER009), 3), "  @X0D(", STRING008, ")@X07"
  276.                         INTEGER010 = 3
  277.                     Endif
  278.                 Next
  279.                 FClose 1
  280.                 If (!BOOLEAN002 || (TokCount() == 0)) Break
  281.                 STRING016 = GetToken()
  282.                 If (InStr(STRING016, "-") > 0) Then
  283.                     INTEGER008 = ToInteger(Right(STRING016, Len(STRING016) - InStr(STRING016, "-")))
  284.                     INTEGER007 = ToInteger(Left(STRING016, InStr(STRING016, "-") - 1))
  285.                     Continue
  286.                 Endif
  287.                 INTEGER007 = ToInteger(STRING016)
  288.                 INTEGER008 = ToInteger(STRING016)
  289.             EndWhile
  290.             :LABEL006
  291.             Goto LABEL005
  292.             :LABEL007
  293.             FClose 2
  294.             Wait
  295.         Case Else
  296.             BOOLEAN002 = 0
  297.             INTEGER003 = STRING003
  298.             If (INTEGER003 == 0) PROC003("", Chr(13), 0, STRING013)
  299.             FOpen 1, STRING009, 0, 0
  300.             FGet 1, STRING001
  301.             FGet 1, STRING001
  302.             FGet 1, STRING001
  303.             For INTEGER006 = 1 To INTEGER003
  304.                 FGet 1, STRING008
  305.                 If (Ferr(1)) PROC003("@X0CInvalid Choice", Chr(13), 18, STRING013)
  306.                 FGet 1, STRING016
  307.                 If (Ferr(1)) PROC003("@X0CInvalid Choice", Chr(13), 18, STRING013)
  308.                 FGet 1, STRING015
  309.                 If (Ferr(1)) PROC003("@X0CInvalid Choice", Chr(13), 18, STRING013)
  310.                 FGet 1, STRING001
  311.             Next
  312.             FClose 1
  313.             If (Upper(Trim(STRING008, " ")) == "STUFF") PROC003("", Chr(13) + "" + Chr(13), 0, STRING013)
  314.             If (Upper(Trim(STRING016, " ")) == "MULTIPLE") Then
  315.                 BOOLEAN002 = 1
  316.                 Tokenize STRING015
  317.                 STRING016 = GetToken()
  318.                 If (InStr(STRING016, "-") > 0) Then
  319.                     INTEGER008 = ToInteger(Right(STRING016, Len(STRING016) - InStr(STRING016, "-")))
  320.                     INTEGER007 = ToInteger(Left(STRING016, InStr(STRING016, "-") - 1))
  321.                 Else
  322.                     INTEGER007 = ToInteger(STRING016)
  323.                     INTEGER008 = ToInteger(STRING016)
  324.                 Endif
  325.             Else
  326.                 INTEGER007 = ToInteger(STRING016)
  327.                 INTEGER008 = ToInteger(STRING015)
  328.             Endif
  329.             INTEGER003 = 0
  330.             INTEGER001 = 0
  331.             INTEGER002 = 0
  332.             INTEGER004 = FileInf(STRING006, 4) / 96
  333.             If (INTEGER008 > INTEGER004) INTEGER008 = INTEGER004
  334.             INTEGER005 = INTEGER004 + 1
  335.             While (1) Do
  336.                 FOpen 1, STRING006, 0, 0
  337.                 FDefIn 1
  338.                 FSeek 1, 0, 1
  339.                 For INTEGER006 = 1 To INTEGER008
  340.                     INTEGER002 = INTEGER002 + 1
  341.                     FRead 1, STRING007, 96
  342.                     STRING007 = Mid(STRING007, 61, 34 - Len(String(INTEGER002)))
  343.                     If ((INTEGER002 >= INTEGER007) && (INTEGER002 <= INTEGER008)) Then
  344.                         If (INTEGER001 == 0) Then
  345.                             Cls
  346.                             PrintLn STRING011
  347.                             PrintLn "  @X0EDisplaying: @X0D", Left(STRING008, 10)
  348.                             PrintLn 
  349.                         Endif
  350.                         Inc INTEGER001
  351.                         Print "@X0F", Right(String(INTEGER002), 4), "@X0B ", Left(STRING007, 34)
  352.                         If (INTEGER001 % 2 == 0) Newline
  353.                         If ((INTEGER001 == 30) && !(INTEGER002 == INTEGER008)) Then
  354.                             DefColor
  355.                             INTEGER001 = 0
  356.                             STRING004 = YesChar()
  357.                             PrintLn 
  358.                             InputYN "View next screen (Enter for more)", STRING004, 14
  359.                             If (STRING004 == NoChar()) Then
  360.                                 FCloseAll
  361.                                 PROC003("", "", 0, STRING013)
  362.                             Endif
  363.                         Endif
  364.                     Endif
  365.                 Next
  366.                 FClose 1
  367.                 If (!BOOLEAN002 || (TokCount() == 0)) Break
  368.                 STRING016 = GetToken()
  369.                 If (InStr(STRING016, "-") > 0) Then
  370.                     INTEGER008 = ToInteger(Right(STRING016, Len(STRING016) - InStr(STRING016, "-")))
  371.                     INTEGER007 = ToInteger(Left(STRING016, InStr(STRING016, "-") - 1))
  372.                     Continue
  373.                 Endif
  374.                 INTEGER007 = ToInteger(STRING016)
  375.                 INTEGER008 = ToInteger(STRING016)
  376.             EndWhile
  377.             If (BOOLEAN001) Print "@X0B", Right(String(INTEGER005), 4) , "@X0F Recent Uploads"
  378.     End Select
  379.     PrintLn 
  380.     WrUNet PcbNode(), UN_Stat(), U_Name(), STRING013, "", ""
  381.     End
  382.  
  383. ;------------------------------------------------------------------------------
  384.  
  385.     Procedure PROC003(String STRING021, String STRING022, Integer INTEGER016, String STRING023)
  386.  
  387.     If (STRING022 <> "") KbdStuff STRING022
  388.     If (!(STRING021 == "")) PrintLn STRING021
  389.     If (!(INTEGER016 == 0)) Delay INTEGER016
  390.     WrUNet PcbNode(), UN_Stat(), U_Name(), STRING023, "", ""
  391.     End
  392.  
  393.     EndProc
  394.  
  395.  
  396. ;------------------------------------------------------------------------------
  397. ;
  398. ; Usage report (before postprocessing)
  399. ;
  400. ; ■ Statements used :
  401. ;
  402. ;    6       End
  403. ;    4       Cls
  404. ;    3       Wait
  405. ;    61      Goto 
  406. ;    89      Let 
  407. ;    2       Print 
  408. ;    18      PrintLn 
  409. ;    56      If 
  410. ;    1       DispFile 
  411. ;    7       FOpen 
  412. ;    7       FClose 
  413. ;    22      FGet 
  414. ;    1       DefColor
  415. ;    3       Log 
  416. ;    2       InputStr 
  417. ;    2       InputYN 
  418. ;    1       Delay 
  419. ;    4       Inc 
  420. ;    1       Newline
  421. ;    2       Tokenize 
  422. ;    1       KbdStuff 
  423. ;    1       RdUNet 
  424. ;    5       WrUNet 
  425. ;    2       FSeek 
  426. ;    2       FRead 
  427. ;    3       FDefIn 
  428. ;    7       FDRead 
  429. ;    2       BitSet 
  430. ;    2       BitClear 
  431. ;    2       FCloseAll
  432. ;    3       EndProc
  433. ;
  434. ;
  435. ; ■ Functions used :
  436. ;
  437. ;    2       /
  438. ;    1       %
  439. ;    39      +
  440. ;    10      -
  441. ;    26      ==
  442. ;    6       <>
  443. ;    5       <
  444. ;    7       <=
  445. ;    7       >
  446. ;    13      >=
  447. ;    41      !
  448. ;    15      &&
  449. ;    12      ||
  450. ;    6       Len(
  451. ;    7       Upper()
  452. ;    2       Mid()
  453. ;    10      Left()
  454. ;    6       Right()
  455. ;    7       Ferr()
  456. ;    10      Chr()
  457. ;    13      InStr()
  458. ;    10      Trim()
  459. ;    5       U_Name()
  460. ;    2       NoChar()
  461. ;    2       YesChar()
  462. ;    1       Strip()
  463. ;    12      String()
  464. ;    1       Mask_Ascii()
  465. ;    1       CurConf()
  466. ;    8       PPEPath()
  467. ;    6       PcbNode()
  468. ;    5       UN_Stat()
  469. ;    1       UN_City()
  470. ;    4       GetToken()
  471. ;    7       Exist()
  472. ;    1       TokenStr()
  473. ;    2       FileInf()
  474. ;    4       PPEName()
  475. ;    2       TokCount()
  476. ;    20      ToInteger()
  477. ;    2       IsBitSet()
  478. ;    3       Crc32()
  479. ;    1       FNext()
  480. ;
  481. ;------------------------------------------------------------------------------
  482. ;
  483. ; Analysis flags : No flag
  484. ;
  485. ;------------------------------------------------------------------------------
  486. ;
  487. ; Postprocessing report
  488. ;
  489. ;    5       For/Next
  490. ;    2       While/EndWhile
  491. ;    19      If/Then or If/Then/Else
  492. ;    1       Select Case
  493. ;
  494. ;------------------------------------------------------------------------------
  495. ;                 AEGiS Corp - Break the routines, code against the machines!
  496. ;------------------------------------------------------------------------------
  497.